/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.hugo.senai.entities;

import java.io.IOException;
import java.io.Serializable;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.List;
import java.util.Set;
import javax.persistence.*;

/**
 *
 * @author alunoo
 */
@Entity
public class Questao implements Serializable {

    @Id
    @GeneratedValue
    private int id;

    private String enunciado;

    @Lob
    private byte[] imagem;

    @ManyToOne
    private Conteudo conteudo;

    @OneToOne(cascade = CascadeType.ALL)
    private Objetivo objetivo;

    private String resposta;
    private boolean alternativa;
    private boolean provao;


    @OneToMany(mappedBy = "questao", cascade = CascadeType.ALL, fetch = FetchType.EAGER)
    private List<Alternativa> alternativas;

    @OneToMany(mappedBy = "questaoProvaPK.questao", cascade = CascadeType.ALL)
    private Set<Questao_e_Prova> questoesProva;

    public Set<Questao_e_Prova> getQuestoesProva() {
        return questoesProva;
    }

    public void setQuestoesProva(Set<Questao_e_Prova> questoesProva) {
        this.questoesProva = questoesProva;
    }

    public List<Alternativa> getAlternativas() {
        return alternativas;
    }

    public void setAlternativas(List<Alternativa> alternativas) {
        this.alternativas = alternativas;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getEnunciado() {
        return enunciado;
    }

    public void setEnunciado(String enunciado) {
        this.enunciado = enunciado;
    }

    public String getResposta() {
        return resposta;
    }

    public void setResposta(String resposta) {
        this.resposta = resposta;
    }

    public boolean isAlternativa() {
        return alternativa;
    }

    public void setAlternativa(boolean alternativa) {
        this.alternativa = alternativa;
    }

    public boolean isProvao() {
        return provao;
    }

    public void setProvao(boolean provao) {
        this.provao = provao;
    }

    public byte[] getImagem() {
        return imagem;
    }

    public void setImagem(byte[] imagem) {
        this.imagem = imagem;
    }

    public Conteudo getConteudo() {
        return conteudo;
    }

    public void setConteudo(Conteudo conteudo) {
        this.conteudo = conteudo;
    }

    public Objetivo getObjetivo() {
        return objetivo;
    }

    public void setObjetivo(Objetivo objetivo) {
        this.objetivo = objetivo;
    }

    @SuppressWarnings("unchecked")
    public static byte[] converte(java.io.File file) throws IOException {
        Path path = Paths.get(file.getAbsolutePath());
        return Files.readAllBytes(path);

    }

}
